package com.qijian.mold.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qijian.mold.domain.param.mold.GetEqpParam;
import com.qijian.mold.domain.param.mold.GetMoldChangeListByCurrentIdParam;
import com.qijian.mold.domain.param.mold.GetUserDetailByRoleTypeParam;
import com.qijian.mold.domain.param.mold.GetWorkOrderDetailsListParam;
import com.qijian.mold.domain.param.moldChange.*;
import com.qijian.mold.domain.param.task.CompleteMoldChangeParam;
import com.qijian.mold.domain.vo.moldChange.*;
import com.qijian.mold.domain.vo.user.UserDetailsVo;

import java.util.List;

/**
 * 换模信息
 *
 * @author anni.zhu
 * @author anni.zhu@king-v.com
 * Created in 2025/3/29 17:25
 */
public interface MoldChangeService {

    /**
     * 新增换模信息
     * @param param
     */
    void save(CreateMoldChangeParam param);


    /**
     * 根据设备id获取设备信息
     * @param eqpId
     * @return
     */
    EqpVo getEqpById(Long eqpId);

    /**
     * 根据设备code获取设备信息
     * @param code
     * @return
     */
    EqpVo getEqpByCode(String code);

    /**
     * 获取设备列表
     * @param param 是否需要检查进行中的设备
     * @return
     */
    Page<EqpVo> getEqpList(GetEqpParam param);

    /**
     * 获取工单列表
     * @return
     */
    Page<WorkOrderDetailsVo> getWorkOrderDetailsList(GetWorkOrderDetailsListParam param);

    /**
     * 查看换模信息详情
     * @param id
     * @return
     */
    MoldChangeVo getById(Long id);

    /**
     * 获取换模信息分页列表
     * @param param
     * @return
     */
    Page<MoldChangeListVo> selectByPage(SelectMoldChangeParam param);

    /**
     * 技术部确认
     * @param param
     */
    void departmentConfirm(ConfirmMoldChangParam param);

    /**
     * 根据当前用户获取换模申请单数据
     * @param
     * @return
     */
    Page<MoldChangeDownVo> getMoldChangeList(GetMoldChangeListByCurrentIdParam param);

    /**
     * 换模申请的开始换模调试完成
     * @param param
     */
    void moldChangeOverDebug(CompleteMoldChangeParam param);

    /**
     * 车间确认完成
     * @param param
     */
    void workshopConfirm(WorkshopConfirmMoldChangParam param);


    /**
     * 根据角色类型获取用户 1-技术员 2-车间操作员 3-操作员
     * @param param
     * @return
     */
    Page<UserDetailsVo> getUserDetailByRoleType(GetUserDetailByRoleTypeParam param);

    /**
     * 修改换模信息可见人ids
     * @param param
     */
   void updateMoldVisibleUserIds(UpdateMoldVisibleUserIdsParam param);
}
